package cn.wolfcode.wolf2w.business.controller;


import cn.wolfcode.wolf2w.business.util.SmsUtil;
import cn.wolfcode.wolf2w.common.core.domain.R;
import cn.wolfcode.wolf2w.common.redis.service.RedisService;
import cn.wolfcode.wolf2w.common.redis.util.RedisKeys;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Random;
import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("/sms")
public class SmsController {

    @Autowired
    private RedisService redisService;

    @PostMapping("/sendVerifyCode")
    //返回值怎么看--需要去前端去看，在没有接口文档的情况下，只能通过查看接口返回值来判断
    public Object sendVerifyCode(String phone){
        //这个验证码有数字和字符，代码意思是将-和字符串进行替换，然后截取6位
//        String code = UUID.randomUUID().toString().replace("-", "").substring(0,6);
        //6位随机数，只有数字
        Random random = new Random();
        int rand = random.nextInt(900000)+100000;
        String code = String.valueOf(rand);
        //发送次数够，就可以注释掉这行代码，使用后台的方式接收验证码
//        SmsUtil.sendSmsAli(phone, code);
        System.err.println("验证码：" + code);
        //存储验证码到redis中
        //参数： key value 过期时间 时间单位
        redisService.setCacheObject(phone,code,5*60L, TimeUnit.SECONDS);
        //如果需要删除所有的数据，添加一个前缀verifcode，就可以直接查找verifcode，就可以直接全部删除了
        //前缀很重要
//        redisService.setCacheObject("verifcode"+phone,code,5*60L, TimeUnit.SECONDS);
        //当每次查都需要书写，容易写出，就需要后进行维护
        String key = RedisKeys.VERIFY_CODE.join(phone);
        redisService.setCacheObject(key,code,RedisKeys.VERIFY_CODE.getTime(), TimeUnit.SECONDS);

        //这个R是自己定义的返回结果，就比如当时e店邦的AjaxResult，就是自己定义的
        return R.ok();//相当于原来的Ajax.success()
    }
}
